#ifndef BEHAVIOUR_H_
#define BEHAVIOUR_H_


#include "stdafx.h"
#include "enums.h"
//#include "deleteCustomClasses.h"
#include "containerWrapper.h"

//Don't include containerWrapper.h, creates cyclical dependency
class ActionList;
struct Event;

class Behaviour
{
private:
	BehaviourTypes behaviour_intern;


protected:
	int priorityValue_intern;
	Event* eventData_intern;
	Stacks stack;

	//TTL stuff
	double worldCreationTime;
	float timeToLive;
	float timeToLiveInactive;

	virtual void initialise() = 0;


public:

	virtual bool update(float _deltaSeconds) = 0; //Should not be void - return set of actions later
	virtual ActionList* generateActions() = 0;
	bool isAliveActive();
	bool isAliveInactive();

	BehaviourTypes getBehaviourType(){ return behaviour_intern; }
	int getBehaviourPriorityValue(){ return priorityValue_intern; }
	Stacks getStack(){ return stack; }

	void setEvent(Event* _event) { eventData_intern = _event; }

	~Behaviour();

};


#endif